From 676ad5da47a054f1516d83a7d3568bffbf612b90 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Mon, 7 Nov 2005 12:52:49 +0100 Subject: [PATCH] fast_flush_area() should index the unmap request array using invcount, not i. Also, fix initialisation of pending_grant_handles: it was happening too late, and the use of memset() was bogus. Signed-off-by: Harry Butterworth Signed-off-by: Keir Fraser --- linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c b/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c index d15c062695..283fcd2ff6 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c @@ -114,10 +114,10 @@ static void fast_flush_area(int idx, int nr_pages) handle = pending_handle(idx, i); if (handle == BLKBACK_INVALID_HANDLE) continue; - unmap[i].host_addr = MMAP_VADDR(idx, i); - unmap[i].dev_bus_addr = 0; - unmap[i].handle = handle; - pending_handle(idx, i) = BLKBACK_INVALID_HANDLE; + unmap[invcount].host_addr = MMAP_VADDR(idx, i); + unmap[invcount].dev_bus_addr = 0; + unmap[invcount].handle = handle; + pending_handle(idx, i) = BLKBACK_INVALID_HANDLE; invcount++; } @@ -498,6 +498,9 @@ static int __init blkif_init(void) struct page *page; int ret; + for (i = 0; i < MMAP_PAGES; i++) + pending_grant_handles[i] = BLKBACK_INVALID_HANDLE; + blkif_interface_init(); page = balloon_alloc_empty_page_range(MMAP_PAGES); @@ -518,8 +521,6 @@ static int __init blkif_init(void) blkif_xenbus_init(); - memset(pending_grant_handles, BLKBACK_INVALID_HANDLE, MMAP_PAGES); - return 0; } -- 2.30.2